
var MongoClient=require('mongodb').MongoClient;
var dbUrl=require('../url.js')
// 连接数据库
function _connectDB(callback){
    var url = dbUrl.dburl;
    MongoClient.connect(url, function(err, db) {
        callback(err,db);
    })
}

// 插入数据
exports.insertOne=function(collectionName,json,callback){
    _connectDB(function(err,db){
        db.collection(collectionName).insertOne(json,function(err,result){
            callback(err,result);
        })
    })
}

// 删除
exports.deleteMany=function(collectionName,json,callback){
    _connectDB(function(err,db){
        // 删除
        db.collection(collectionName).deleteMany(json,function(err,results){
            callback(err,results);
            db.close();
        })
    })
}

// 修改
exports.updateMany = function (collectionName, json1, json2, callback) {
    _connectDB(function (err, db) {
        db.collection(collectionName).updateMany(
            json1,
            json2,
            function (err, results) {
                callback(err, results);
                db.close();
            });
    })
}


// 查找
exports.find=function(collectionName,json,C,D){
    var result=[];
    if(arguments.length==3){
        //C就是回调，参数D没有传
        var callback=C;
        var skipnumber=0;
        var limit=0;
    }else if(arguments.length==4){
        var callback=D;
        var args=C;
        var skipnumber=args.pageSize*(args.page-1)||0;//跳过的条数
        var limit=args.pageSize||0;
        var sort=args.sort||{};
    }else{
        throw new Error("find 函数的参数个数，必须是3个或者4个")
        return
    }
    // 连接数据库，然后查找 该页的数据
    _connectDB(function(err,db){
        var cursor=db.collection(collectionName).find(json).skip(skipnumber).limit(limit).sort(sort);
        cursor.each(function(err,doc){
            if(err){
                callback(err,null);
                db.close();
                return ;
            }
            if(doc!=null){
                result.push(doc)//放入结果数组
            }else{
                // 遍历结束，没有更多的文档了
                callback(null,result);
                db.close();
            }
        })
    })
}

